package cn.edu.csust.coursecard.task;

import cn.edu.csust.coursecard.common.RedisKeyEnum;
import cn.edu.csust.coursecard.dao.dto.RedisKeyConstant;
import cn.edu.csust.coursecard.service.IPostService;
import cn.edu.csust.coursecard.service.StuInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import java.util.concurrent.TimeUnit;

@Component
public class RefreshPostLikeNumTask {
    
    @Autowired
    private IPostService postService;
    
    @Autowired
    private RedisTemplate<String,Object> redisTemplate;

    @Autowired
    private StuInfoService stuInfoService;
    
    /**
     * 每一个小时刷新一下帖子的点赞数量
     */
    @Scheduled(cron = "0 0 */1 * * ?")
    public void refreshLikeNum() {
        postService.refreshPostLikeNum();
    }

    /**
     * 每天执行一次，每天晚上12点
     * 减少对当前周的请求次数，每晚清除昨天的当前周缓存，在明天的下一次请求当前周成功时，再次存入缓存
     */
    @Scheduled(cron = "0 0 0 */1 * * ")
    public void refreshNowWeekDate() {
        redisTemplate.delete(RedisKeyEnum.NOW_WEEK_DATE);
    }

    /**
     * 每天执行一次，每天晚上12点
     * 如果有新生在没修改教务之前进入app或者是其他情况导致没有教务信息但有了不全的头像字节码，那么每晚将这些用户的头像重置以便重新从教务获取头像
     */
    @Scheduled(cron = "0 0 0 */1 * * ")
    public void solveNewStudentMistake() {
        stuInfoService.solveNewStudentMistake();
    }


}
